package practice;
import java.util.Arrays;
import java.util.Scanner;

public class practice08 {
    /**
     * 求最小公倍数
     */
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt(), b = in.nextInt();
        System.out.println(a * b / gcd(a, b));
    }
    public static int gcd(int a, int b) {
        if (b == 0) return a;
        return gcd(b, a % b);
    }

    /**
     * 求数组中的最长连续子序列
     * @param arr
     * @return
     */
    public int MLS (int[] arr) {
        Arrays.sort(arr);
        int n = arr.length, ret = 0;
        for (int i = 0; i < n;) {
            int j = i + 1, count = 1;
            while (j < n) {
                if (arr[j] - arr[j - 1] == 1) {
                    count++;
                    j++;
                } else if (arr[j] == arr[j - 1]){
                    j++;
                } else {
                    break;
                }
            }
            ret = Math.max(ret, count);
            i = j;
        }
        return ret;
    }

    /**
     * 字母收集
     * @param args
     */
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), m = in.nextInt();
        char[][] arr = new char[n + 1][m + 1];
        for (int i = 1; i <= n; i++) {
            char[] ch = in.next().toCharArray();
            for (int j = 1; j <= m; j++) {
                arr[i][j] = ch[j - 1];
            }
        }
        int[][] dp = new int[n + 1][m + 1];
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                int t = 0;
                if (arr[i][j] == 'l') t = 4;
                else if (arr[i][j] == 'o') t =3;
                else if (arr[i][j] == 'v') t =2;
                else if (arr[i][j] == 'e') t = 1;
                dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]) + t;
            }
        }
        System.out.println(dp[n][m]);
    }
}
